// function a(cb) {
//   setTimeout(() => {
//     console.log('a 执行完毕');
//     cb()//本来是b调用完了a调用，现在是a调用完了才b调用这个就是回调
//   }, 1000)
// }

// function b() {
//   console.log('b 执行完毕');
// }

// a(b)
//b()


// 下面就是回调函数嵌套
function a(cb, cb2, cb3) {
  setTimeout(() => {
    console.log('a 执行完毕');
    cb(cb2, cb3)
  }, 1000)
}
function b(cb, cb3) {
  setTimeout(() => {
    console.log('b 执行完毕');
    cb(cb3)
  }, 1500)
}
function c(cb) {
  setTimeout(() => {
    console.log('c 执行完毕');
    cb()
  }, 500)
}
function d(cb) {
  console.log('d 执行完毕');
}
a(b, c, d)